import os
from XEdu.hub import Workflow as wf
import csv
import cv2
import numpy as np
body = wf(task='pose_hand')

det = wf(task='det_hand')

# 要遍历的文件夹路径
folder_path = 'temp/scissors'
with open('csv/temp/s.csv', 'w', newline='') as csvfile:
            writer = csv.writer(csvfile)
            # 遍历文件夹中的所有文件
            for filename in os.listdir(folder_path):
    # 获取文件的完整路径
                file_path = os.path.join(folder_path, filename)
    
    # 检查文件是否是图片文件（假设以.jpg、.png、.jpeg为图片扩展名）
                if file_path.endswith(('.jpg', '.jpeg', '.png')):
        # 在这里，你可以将 file_path 加入你的程序中进行处理
                        result,img_with_box = det.inference(data=file_path,img_type='pil') # 进行模型推理
                        if result !=[]:
                                x_y = [abs(result[0][0]-result[0][2]),abs(result[0][3]-result[0][1])]  #计算手部选框的坐标差值

                                keypoints,img_with_keypoints = body.inference(data=file_path,img_type='pil') # 进行模型推理
                                data = []
                                for i in range(21):
                                        for j in range(2):
                                                n = (keypoints[i][j]-result[0][j])/x_y[j]
                                                data.append(n)
                        else:
                                continue
                        data.append(0)
                        list = np.array(data)   #np数组转化可迭代列表                   
                        print(file_path)
                        writer.writerow(list)

folder_path = 'temp/rock'
with open('csv/temp/r.csv', 'w', newline='') as csvfile:
            writer = csv.writer(csvfile)
            # 遍历文件夹中的所有文件
            for filename in os.listdir(folder_path):
    # 获取文件的完整路径
                file_path = os.path.join(folder_path, filename)
    
    # 检查文件是否是图片文件（假设以.jpg、.png、.jpeg为图片扩展名）
                if file_path.endswith(('.jpg', '.jpeg', '.png')):
        # 在这里，你可以将 file_path 加入你的程序中进行处理
                        result,img_with_box = det.inference(data=file_path,img_type='pil') # 进行模型推理
                        if result !=[]:
                                x_y = [abs(result[0][0]-result[0][2]),abs(result[0][3]-result[0][1])]  #计算手部选框的坐标差值

                                keypoints,img_with_keypoints = body.inference(data=file_path,img_type='pil') # 进行模型推理
                                data = []
                                for i in range(21):
                                        for j in range(2):
                                                n = (keypoints[i][j]-result[0][j])/x_y[j]
                                                data.append(n)
                        else:
                                continue
                        data.append(1)
                        list = np.array(data)   #np数组转化可迭代列表                   
                        print(file_path)
                        writer.writerow(list)

folder_path = 'temp/paper'
with open('csv/temp/p.csv', 'w', newline='') as csvfile:
            writer = csv.writer(csvfile)
            # 遍历文件夹中的所有文件
            for filename in os.listdir(folder_path):
    # 获取文件的完整路径
                file_path = os.path.join(folder_path, filename)
    
    # 检查文件是否是图片文件（假设以.jpg、.png、.jpeg为图片扩展名）
                if file_path.endswith(('.jpg', '.jpeg', '.png')):
        # 在这里，你可以将 file_path 加入你的程序中进行处理
                        result,img_with_box = det.inference(data=file_path,img_type='pil') # 进行模型推理
                        if result !=[]:
                                x_y = [abs(result[0][0]-result[0][2]),abs(result[0][3]-result[0][1])]  #计算手部选框的坐标差值

                                keypoints,img_with_keypoints = body.inference(data=file_path,img_type='pil') # 进行模型推理
                                data = []
                                for i in range(21):
                                        for j in range(2):
                                                n = (keypoints[i][j]-result[0][j])/x_y[j]
                                                data.append(n)
                        else:
                                continue
                        data.append(2)
                        list = np.array(data)   #np数组转化可迭代列表                   
                        print(file_path)
                        writer.writerow(list)

合并csv文件
import pandas as pd
import os

# 指定包含CSV文件的目录
directory = 'csv/temp'
# 获取目录下所有的CSV文件
csv_files = [f for f in os.listdir(directory) if f.endswith('.csv')]

# 创建一个空的DataFrame列表，用于存储读取的CSV文件
df_list = []

# 循环读取每个CSV文件
for file in csv_files:
    # 读取CSV文件并添加到列表中
    df = pd.read_csv(os.path.join(directory, file))
    df_list.append(df)

# 使用concat函数合并所有DataFrame
merged_df = pd.concat(df_list, ignore_index=True)

# 将合并后的DataFrame保存到新的CSV文件
output_path = 'csv/temp/srp.csv'
merged_df.to_csv(output_path, index=False)